package com.testtry;

import java.io.File;

public class FileDiGuiTest {
    //要求使用递归将所有文件名都列出来
    public static void main(String[] args) {
        File file = new File("day03-code\\src");
        System.out.println(file.getName());
        listAllLevel(file,"");
    }
    //递归取所有文件
    public static void listAll(File file){
        //获取该目录下的所有文件
        File[] files = file.listFiles();
        //遍历
        for (File file1 : files) {
            //判断是文件还是目录
            if (file1.isFile()){
                System.out.println(file1.getName());
            }else {//是目录
                listAll(file1);
            }
        }
    }
    //递归取该目录下的所有层级关系
    /**
     * 递归打印文件树
     * @param file 当前文件/目录
     * @param prefix 每行前面的缩进符号，比如 "├── " 或 "└── "
     */
    public static void listAllLevel(File file, String prefix) {
        File[] files = file.listFiles();
        if (files == null || files.length == 0) return;

        for (int i = 0; i < files.length; i++) {
            File f = files[i];
            boolean isLast = i == files.length - 1;

            // 打印连接符
            String connector = isLast ? "└── " : "├── ";
            System.out.println(prefix + connector + f.getName());

            // 如果是目录，递归进入
            if (f.isDirectory()) {
                // 子目录的前缀：如果当前是最后一个，用空格；否则用 "│   "
                String newPrefix = prefix + (isLast ? "    " : "│   ");
                listAllLevel(f, newPrefix);
            }
        }
    }
}
